package com.zb.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @Author WEN
 * @Date 2023/10/10 0010
 **/
@Data
@ApiModel("工单详情对象")
public class OrderDetailVo {
    @ApiModelProperty(value = "工单ID")
    private Long id;

    @ApiModelProperty(value = "工单单号")
    private String orderNo;

    @ApiModelProperty(value = "工单状态：1-待派单，2-待服务商确认，3-处理中，4-已完成，5-已作废")
    private Integer status;

    @ApiModelProperty(value = "是否工单存档：false-未存档，true-已存档")
    private Boolean archived;

    @ApiModelProperty(value = "工单模块ID")
    private Long moduleId;

    @ApiModelProperty(value = "模块名称")
    private String module;

    @ApiModelProperty(value = "工单级别")
    private String workLevel;

    @ApiModelProperty(value = "工单级别颜色")
    private String workLevelColor;

    @ApiModelProperty(value = "质保状态：false-保内，true-保外")
    private Boolean overinsured;

    @ApiModelProperty(value = "是否全包费用(配件费+服务费)：false-不包，true-全包")
    private Boolean allInclusiveFee;

    @ApiModelProperty(value = "节点是否超时：false-未超时，true-已超时")
    private boolean nodeTimeout;

    @ApiModelProperty(value = "超时节点类型：2-未派单，3-服务商未接单，4-工程师未接单，5-工程师未拨打电话，6-工程师未预约，7-工程师未签到")
    private Integer nodeOverTimetype;

    @ApiModelProperty(value = "节点超时时间")
    private String nodeOverTime;

    @ApiModelProperty(value = "是否挂起：false-没有挂起工单，true-有挂起工单")
    private boolean suspend = Boolean.FALSE;

    // 以下为工单客户信息
    @ApiModelProperty(value = "客户ID")
    private Long userId;

    @ApiModelProperty(value = "客户名称")
    private String userName;

    @ApiModelProperty(value = "联系人名称")
    private String contacts;

    @ApiModelProperty(value = "联系人手机号")
    private String contactsPhone;

    @ApiModelProperty(value = "其他联系方式")
    private String otherPhone;

    @ApiModelProperty(value = "客户地址-省")
    private String province;

    @ApiModelProperty(value = "客户地址-市")
    private String city;

    @ApiModelProperty(value = "客户地址-区/县")
    private String area;

    @ApiModelProperty(value = "客户地址-镇")
    private String town;

    @ApiModelProperty(value = "客户地址-详情地址")
    private String address;

    //  以下为服务商信息
    @ApiModelProperty(value = "服务商ID")
    private Long networkId;

    @ApiModelProperty(value = "服务商名称")
    private String network;

    @ApiModelProperty(value = "服务商负责人")
    private String networkManaterEmp;

    @ApiModelProperty(value = "服务商负责人手机号")
    private String networkManaterPhone;

    @ApiModelProperty(value = "服务商地址")
    private String networkAddress;

    @ApiModelProperty(value = "服务商接单时间")
    private Date receivingOrderTime;

    @ApiModelProperty(value = "工程师负责人")
    private String engineerManagerEmp;

    @ApiModelProperty(value = "工程师负责人手机号")
    private String engineerManagerPhone;

    @ApiModelProperty(value = "工单派单到工程师时间")
    private String dispatchOrderEngineerTime;

    @ApiModelProperty(value = "工程师接单时间")
    private String engineerReceivingOrderTime;

    // 以下为工单信息
    @ApiModelProperty(value = "报单时间")
    private Date createTime;

    @ApiModelProperty(value = "工单来源有：1-平台系统报单，2-扫码报单，3-小程序报单，4-APP报单，5-Excel导入报单，6-品牌商家建单")
    private Integer source;

    @ApiModelProperty(value = "是否分配客服：false-没有，true-已分配")
    private boolean assignEmp = Boolean.FALSE;

    @ApiModelProperty(value = "客服名称")
    private String emp;

    @ApiModelProperty(value = "工单分类")
    private String orderType;

    @ApiModelProperty(value = "工单处理方式")
    private String orderWay;

    @ApiModelProperty(value = "工单派单到服务商时间")
    private Date dispatcOrderTime;

    @ApiModelProperty(value = "工单完成时间")
    private Date endTime;

    @ApiModelProperty(value = "工单质保天数")
    private Integer warrantyDay;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "当前用时")
    private String currentUseTime;

    @ApiModelProperty(value = "总耗时")
    private String totalUseTime;

    @ApiModelProperty(value = "是否催单：false-未催单，true-已催单")
    private boolean reminder;

    @ApiModelProperty(value = "工单内容")
    private String content;

    @ApiModelProperty(value = "结单核销码")
    private String statementVerifCode;

    @ApiModelProperty(value = "收取客户费用凭证")
    private String collectCustomerPriceVoucher;

    @ApiModelProperty(value = "工单图片")
    private List<String> orderImages;

    @ApiModelProperty(value = "关联品牌商家")
    private String factory;

    @ApiModelProperty(value = "工单自定义字段")
    private List<WorkDetailFieldParamVo> orderCustomFields;

    @ApiModelProperty(value = "冻结状态：0-无，1-冻结中、2-已解冻")
    private Integer freezeStatus = 0;

    @ApiModelProperty(value = "冻结天数")
    private Integer freezeDay = 0;

    @ApiModelProperty(value = "提现状态：0-未提现、1-提现待审核、2-提现待打款、3-提现完成")
    private Integer orderWithdrawStatus = 0;

    @ApiModelProperty(value = "分机号")
    private String extensionNbr;
    @ApiModelProperty("第三方推送状态")
    private Integer thirdPushState;
    @ApiModelProperty("第三方错误提示")
    private String thirdPushErrorMsg;
    @ApiModelProperty("推送到第三方的json数据")
    private String thirdStateFinishContentJson;

//新增工程师等级
    @ApiModelProperty(value = "工程师等级")
    private String engineerLevel;
    @ApiModelProperty(value = "客户类型")
    private String customType;
    @ApiModelProperty(value = "产品分类")
    private String productType;
    @ApiModelProperty(value = "产品品牌")
    private String productBrand;
    @ApiModelProperty(value = "产品名称")
    private String productName;
    @ApiModelProperty(value = "处理方式")
    private Integer approach;
    @ApiModelProperty(value = "是否需要再次上门")
    private Integer isWorkAgain;
    @ApiModelProperty(value = "再次上门原因")
    private String workAgainMsg;
    @ApiModelProperty(value = "签单图")
    private List<String> signImageList;
    @ApiModelProperty(value = "是否拨通电话")
    private Integer isCall;

    //新增管理员驳回未结算工单
    @ApiModelProperty(value = "是否允许驳回已完成未结算工单 0-否，1-是")
    private Boolean cancelOrderStatus;

    //新增核实时间字段
    @ApiModelProperty(value = "核实时间")
    private Date verifiedVisitTime;

    @ApiModelProperty(value = "是否待核销")
    private Integer isHx;

    @ApiModelProperty(value = "是否暂挂")
    private Integer isPause;

    @ApiModelProperty(value = "是否退回单")
    private Integer isReturn;

    @ApiModelProperty(value = "快递公司：1.顺丰 2.圆通 3.中通 4.申通 5.韵达 6.京东 7.邮政 8.极兔 9.德邦 10.百世")
    private Integer expressCompany;

    @ApiModelProperty(value = "快递单号")
    private String expressNbr;
}
